package com.qianxun.module.application.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qianxun.module.application.entity.ApplicationDataRelation;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 应用数据业务接口
 *
 * @author Admin
 */
public interface ApplicationDataRelationService {

    /**
     * 创建表
     *
     * @param tableName 待创建的表名
     * @return
     */
    int createTable(String tableName);

    /**
     * 查询指定表数量
     *
     * @param tableName 待查询的表名
     * @param appId     应用ID
     * @param dataType  数据类型
     * @return
     */
    int queryCount(String tableName, String appId, String dataType);

    /**
     * 插入数据
     *
     * @param tableName   待插入的表名
     * @param appId       应用ID
     * @param dataType    数据类型
     * @param dataKey     数据key
     * @param createdTime 创建时间
     * @param sort1       sort2 sort3 ... 排序值
     * @return
     */
    int insertIntoTable(String tableName, String appId, String dataType, String dataKey, Date createdTime, String sort1, String sort2, String sort3, String sort4, String sort5);

    /**
     * 删除指定数据
     *
     * @param tableName 表名
     * @param appId     应用ID
     * @param dataType  数据类型
     * @return
     */
    int deleteData(String tableName, String appId, String dataType);

    /**
     * 复制指定数据总A表到B表
     *
     * @param targetTableName 目标表
     * @param originTableName 原始表
     * @param appId           应用ID
     * @param dataType        数据类型
     * @return
     */
    int copyData(String targetTableName, String originTableName, String appId, String dataType);

    /**
     * 分页条件查询
     *
     * @param tables   待查询的表名集合
     * @param appId    应用ID
     * @param dataType 数据类型
     * @param dataKey  数据key
     * @param sortList 排序信息
     * @param page     分页信息
     * @return
     */
    List<ApplicationDataRelation> selectByPage(List<String> tables, String appId, String dataType, String dataKey, Set<Map<String, String>> sortList, Page<ApplicationDataRelation> page);

}
